Astronomiczne układy współrzędnych

Łukasz Kochańczyk
Astronomia, I rok, studia pierwszego stopnia
Wydział Fizyki, Astronomii i Informatyki Stosowanej
Uniwersytetu Jagiellońskiego
Kraków 2011

Wstęp

W astromii, podobnie jak i w innych naukach fizycznych, niezbędne jest zdefiniowanie układu odniesienia jednoznacznie określającego współrzędne punktów, na których skupiana jest uwaga obserwatora. Stosowanym modelem układu astronomicznego jest jednostkowa sfera w centrum, której znajduje się obserwator, a na której znajdują się obiekty (przykładowo gwiazdy). Celem określenia współrzędnych obiektu astronomicznego na niebie najczęściej stosuje się trzy przedstawione poniżej układy odniesienia. Szczegółowe opisy można znaleźć w pozycji [1].

Niniejszy notebook został stworzony w oparciu o przekształcenia obrotu wokół osi współrzędnych [2].

Układ współrzędnych horyzontalnych

Obiekt na sferze niebieskiej lokalizowany jest przy użyciu dwóch współrzędnych:
	– azymutu czyli kąta dwuściennego między półpłaszczyzną leżącą na lokalnym południku oraz półpłaszczyzną przechodzącą przez obiekt i oś wyznaczaną przez Zenit i Nadir,
	– wysokości, czyli kąta dwuściennego, którego półpłaszczyzny są prostopadłe do półpłaszczyzn kąta azymutu, gdzie jedna z nich zawiera się na horyzoncie, a druga przechodzi przez zadany obiekt, obydwie półpłaszczyzny przecinają się w punkcie położenia obserwatora.

Elementy animacji:
	A – azymut
	h – wysokość
	N, S, W, E – kierunki świata
	Z, Nd – zenit i nadir
	R – południk lokalny
	O – obserwator

Manipulate[
Show[
(*Sfera*)
ParametricPlot3D[{Sin[θ]*Cos[ϕ],Sin[θ]*Sin[ϕ],Cos[θ]},{θ,0,π},{ϕ,0,2 π}, PlotStyle->{Directive[LightBlue, Specularity[White, 0.1],Opacity[0.1]]}, Boxed -> False, 
PlotLabel->"Układ współrzędnych horyzontalnych", Mesh -> None,Axes -> False, PlotRange->{{-1.5,1.5},{-1.5,1.5}, {-1.5, 1.5}}], 

(*Płaszczyzna horyzontu*)
ParametricPlot3D[{b* Cos[ϕ], b*Sin[ϕ],0},{b,0,1},{ϕ,0,2 π},PlotStyle->Directive[Green, Opacity[0.9]], Boxed -> False, Mesh -> None,Axes -> False, PlotRange->{{-1.5,1.5},{-1.5,1.5}, {-1.5, 1.5}}],

(*Południk lokalny*)
ParametricPlot3D[{{Sin[θ], 0, Cos[θ]},{Cos[(θ/2)], 0, 0}, {0, 0, Cos[θ]}},{θ,0,π},Mesh ->None,Axes -> False, PlotStyle -> {Blue,Red, Black}, PlotRange->{{-1.5,1.5},{-1.5,1.5}, {-1.5, 1.5}}],

(*Układ odniesienia - horyzontalny*)
ParametricPlot3D[{Cos[ϕ], Sin[ϕ],0},{ϕ, -a,0}, PlotStyle -> Directive[Red, Thick], Axes ->False, Boxed->False, PlotRange->{{-1.5,1.5},{-1.5,1.5}, {-1.5, 1.5}}],

ParametricPlot3D[{Sin[θ]Cos[-a],Sin[θ]Sin[-a],Cos[θ]},Evaluate[{θ,(π/2)-b,(π/2)}/.{b->h}],
PlotStyle->Directive[Blue, Thick], Boxed -> False,Axes -> False, PlotRange->{{-1.5,1.5},{-1.5,1.5}, {-1.5, 1.5}}],
(*Gwiazda*)
Graphics3D[{Specularity[White,100],Yellow,Sphere[{
Evaluate[f*Sin[θ]Cos[-a]/.{θ-> ((π/2)-h)}],
Evaluate[f*Sin[θ]Sin[-a]/.{θ-> ((π/2)-h)}],
Evaluate[f*Cos[θ]/.{θ-> ((π/2)-h)}]}, 
0.025]}, Lighting -> {"Automatic", LightYellow}, PlotRange->{{-1.5,1.5},{-1.5,1.5}, {-1.5, 1.5}}],
(*Opis*)
Graphics3D[{
Text["S", {1.2, 0, 0}], 
Text["N", {-1.2, 0, 0}], 
Text["E", {0,1.2,0}], 
Text["W", {0, -1.2, 0}], 
Text["Z", {0 ,0, 1.2}], 
Text["Nd", {0 ,0, -1.2}], 
Text["R", {0.3 ,0, 1.2}], 
Text["O", {0.2, -0.2, 0}],
Text["A", {1.1Cos[-a], 1.1Sin[-a],0}],
Text["h",   {Evaluate[1.1Sin[θ]Cos[-a]/.{θ-> ((π/2)-h)}],1.1Evaluate[Sin[θ]Sin[-a]/.{θ-> ((π/2)-h)}], 1.1Evaluate[Cos[θ]/.{θ-> ((π/2)-h)}]}],
Arrow[{{0,0,0},{0,0,0.2}}]}], 

Graphics3D[{
{Magenta, Line[{{0,0,0},{Cos[-a], Sin[-a], 0}}]},
{Blue, Line[{{0,0,0}, {Evaluate[f*Sin[θ]Cos[-a]/.{θ-> ((π/2)-h)}],Evaluate[f*Sin[θ]Sin[-a]/.{θ-> ((π/2)-h)}], Evaluate[f*Cos[θ]/.{θ-> ((π/2)-h)}]}}]},
PointSize[Large],Black, Point[{1,0,0}], Point[{0,1,0}],Point[{-1,0,0}],Point[{0,-1,0}]
}],

ImageSize ->700
],
{{a, ((11π)/6), "Azymut"},  (π/648000), 2π, (π/648000),Appearance->"Labeled", ControlType -> Slider}, {{h, (π/6), "Wysokość"} ,((-π)/2), (π/2), ((7π)/648000),Appearance->"Labeled",ControlType -> Slider},
{{f, 1, "Gwiazda"} ,1, 5,ControlType -> Slider},
Paneled -> False, ControlPlacement ->Right]

Układy współrzędnych równikowych

Układ współrzędnych równikowych godzinnych

W tym układzie współrzędnych obiekt lokalizowany jest za pomocą kąta godzinnego – definicja analogiczna do Azymutu z zastrzeżeniem, że oś wyznaczona jest między biegunem północnym a obserwatorem oraz deklinacji, której półpłaszczyzny leżą na: równiku niebieskim i przechodzą przez gwiazdę.

Elementy animacji:
	t – kąt godzinny
	δ – deklinacja
	N, S, W, E – kierunki świata
	Z, Nd – zenit i nadir
	R – południk lokalny
	P – biegun północny
	O – obserwator

Manipulate[
Show[
(*Sfera*)
ParametricPlot3D[{Sin[θ]*Cos[ϕ],Sin[θ]*Sin[ϕ],Cos[θ]},{θ,0,π},{ϕ,0,2 π}, PlotStyle->{Directive[LightBlue, Specularity[White, 0.1],Opacity[0.1]]}, Boxed -> False, 
PlotLabel->"Układ równikowy godzinny", Mesh -> None,Axes -> False, PlotRange->{{-1.5,1.5},{-1.5,1.5}, {-1.5, 1.5}}], 

(*Płaszczyzna horyzontu*)
ParametricPlot3D[{b* Cos[ϕ], b*Sin[ϕ],0},{b,0,1},{ϕ,0,2 π},PlotStyle->Directive[Green, Opacity[0.9]], Boxed -> False, Mesh -> None,Axes -> False, PlotRange->{{-1.5,1.5},{-1.5,1.5}, {-1.5, 1.5}}],

(*Płaszczyzna równika*)
ParametricPlot3D[{b* Cos[ϕ]*Cos[(π/2)-Φ], b*Sin[ϕ],b* Cos[ϕ]*Sin[(π/2)-Φ]},{b,0,1},{ϕ,0,2 π},PlotStyle->Directive[Blue, Opacity[0.4]], Boxed -> False, Mesh -> None,Axes -> False, PlotRange->{{-1.5,1.5},{-1.5,1.5}, {-1.5, 1.5}}],

(*Południk lokalny*)
ParametricPlot3D[{{Sin[θ]*Cos[(π/2)-Φ]+ Cos[θ]*Sin[(π/2)-Φ], 0, -Cos[θ]*Cos[(π/2)-Φ]+Sin[θ]*Sin[(π/2)-Φ]},
{b*Cos[(π/2)-Φ], 0, b*Sin[(π/2)-Φ]},
{Cos[θ]Sin[(π/2)-Φ],0,-Cos[θ]Cos[(π/2)-Φ]}
},
 {θ,0,π}, {b, 0, 1},Mesh -> True ,MeshStyle ->{Red,Blue} ,Axes -> False, PlotRange->{{-1.5,1.5},{-1.5,1.5}, {-1.5, 1.5}}],

(*Układ odniesienia - równikowy, godzinny*)
ParametricPlot3D[{
Cos[ϕ]Sin[Φ], 
Sin[ϕ],
Cos[ϕ]Cos[Φ]}, 
Evaluate[{ϕ, -t,0}/.{t->a}], PlotStyle -> Directive[Red, Thick], Axes ->False, Boxed->False, PlotRange->{{-1.5,1.5},{-1.5,1.5}, {-1.5, 1.5}}],

ParametricPlot3D[{
Evaluate[Sin[θ]Cos[-t]Sin[Φ]+Cos[θ]Cos[Φ]/.{t->a}],
Evaluate[Sin[θ]Sin[-t]/.{t->a}],
Evaluate[Sin[θ]Cos[-t]Cos[Φ]- Cos[θ]Sin[Φ]/.{t->a}]},
Evaluate[{θ,(π/2)+b,(π/2)}/.{b->h}],PlotStyle->Directive[Blue, Thick], Boxed -> False,Axes -> False, PlotRange->{{-1.5,1.5},{-1.5,1.5}, {-1.5, 1.5}}],
(*Gwiazda*)
Graphics3D[{Specularity[White,100],Yellow,Sphere[{
Evaluate[f*(Sin[θ]Cos[-t]Sin[Φ]+Cos[θ]Cos[Φ])/.{t->a}/.{θ-> ((π/2)+h)}],
Evaluate[f*(Sin[θ]Sin[-t])/.{t->a}/.{θ-> ((π/2)+h)}],
Evaluate[f*(Sin[θ]Cos[-t]Cos[Φ]- Cos[θ]Sin[Φ])/.{t->a}/.{θ-> ((π/2)+h)}]}, 
0.025]}, Lighting -> {"Automatic", LightYellow}, PlotRange->{{-1.5,1.5},{-1.5,1.5}, {-1.5, 1.5}}],
(*Opis*)
Graphics3D[{
Text["S", {1.2, 0, 0}], 
Text["N", {-1.2, 0, 0}], 
Text["E", {0,1.2,0}], 
Text["W", {0, -1.2, 0}], 
Text["Z", {0 ,0, 1.2}], 
Text["Nd", {0 ,0, -1.2}], 
Text["R", {0.3 ,0, 1.2}], 
Text["O", {0.2, -0.2, 0}],
Text["P", {-1.3*Sin[(π/2)-Φ], 0, 1.3*Cos[(π/2)-Φ]}],
Text["t", {1.1Cos[-a]Sin[Φ], 1.1Sin[-a],1.1Cos[-a]Cos[Φ]}],
Text["δ",   {
Evaluate[1.1(Sin[θ]Cos[-t]Sin[Φ]+Cos[θ]Cos[Φ])/.{t->a}/.{θ-> ((π/2)+h)}],
Evaluate[1.1(Sin[θ]Sin[-t])/.{t->a}/.{θ-> ((π/2)+h)}],
Evaluate[1.1(Sin[θ]Cos[-t]Cos[Φ]- Cos[θ]Sin[Φ])/.{t->a}/.{θ-> ((π/2)+h)}]}],
Arrow[{{0,0,0},{0,0,0.2}}],
{Magenta, Line[{{0,0,0},{Cos[-a]Sin[Φ], Sin[-a],Cos[-a]Cos[Φ]}}]},
{Blue, Line[{{0,0,0}, {Evaluate[f(Sin[θ]Cos[-t]Sin[Φ]+Cos[θ]Cos[Φ])/.{t->a}/.{θ-> ((π/2)+h)}],Evaluate[f(Sin[θ]Sin[-t])/.{t->a}/.{θ-> ((π/2)+h)}],
Evaluate[f(Sin[θ]Cos[-t]Cos[Φ]- Cos[θ]Sin[Φ])/.{t->a}/.{θ-> ((π/2)+h)}]}}]},
PointSize[Large],Black, Point[{1,0,0}], Point[{0,1,0}],Point[{-1,0,0}],Point[{0,-1,0}]}],
ImageSize ->700],
{{a, ((11π)/6), "t"},  (π/648000), 2π, (π/648000),Appearance->"Labeled", ControlType -> Slider}, {{h, (π/6), "δ"} ,((-π)/2), (π/2), ((7π)/648000),Appearance->"Labeled", ControlType -> Slider}, {{Φ, (π/4), "ϕ"}, 0, (π/2), (π/648000),Appearance->"Labeled", ControlType -> Slider},
{{f, 1, "Gwiazda"} ,1, 5,ControlType -> Slider},
Paneled -> False, ControlPlacement ->Right, LocalizeVariables -> True
]

Układ współrzędnych równikowych równonocnych

Deklinacja zdefiniowana jest identycznie jak w układzie równikowym godzinnym, rektascensja jest kątem mierzonym analogicznie do kąta godzinnego, ale w przeciwnym kierunku i od punktu Barana.

Elementy animacji:
	α – rektascensja
	δ – deklinacja
	ℽ – punkt Barana
	N, S, W, E – kierunki świata
	Z, Nd – zenit i nadir
	R – południk lokalny
	P – biegun północny
	O – obserwator

Manipulate[
Show[
(*Sfera*)
ParametricPlot3D[{Sin[θ]*Cos[ϕ],Sin[θ]*Sin[ϕ],Cos[θ]},{θ,0,π},{ϕ,0,2 π}, PlotStyle->{Directive[LightBlue, Specularity[White, 0.1],Opacity[0.1]]}, Boxed -> False, 
PlotLabel->"Układ równikowy równonocny", Mesh -> None,Axes -> False, PlotRange->{{-1.5,1.5},{-1.5,1.5}, {-1.5, 1.5}}], 

(*Płaszczyzna horyzontu*)
ParametricPlot3D[{b* Cos[ϕ], b*Sin[ϕ],0},{b,0,1},{ϕ,0,2 π},PlotStyle->Directive[Green, Opacity[0.9]], Boxed -> False, Mesh -> None,Axes -> False, PlotRange->{{-1.5,1.5},{-1.5,1.5}, {-1.5, 1.5}}],

(*Płaszczyzna równika*)
ParametricPlot3D[{b* Cos[ϕ]*Cos[(π/2)-Φ], b*Sin[ϕ],b* Cos[ϕ]*Sin[(π/2)-Φ]},{b,0,1},{ϕ,0,2 π},PlotStyle->Directive[Blue, Opacity[0.4]], Boxed -> False, Mesh -> None,Axes -> False, PlotRange->{{-1.5,1.5},{-1.5,1.5}, {-1.5, 1.5}}],

(*Południk lokalny*)
ParametricPlot3D[{{Sin[θ]*Cos[(π/2)-Φ]+ Cos[θ]*Sin[(π/2)-Φ], 0, -Cos[θ]*Cos[(π/2)-Φ]+Sin[θ]*Sin[(π/2)-Φ]},
{Cos[θ]Sin[(π/2)-Φ],0,-Cos[θ]Cos[(π/2)-Φ]}}, {θ,0,π},Mesh -> False,PlotStyle ->Blue, PlotStyle ->Black ,Axes -> False, PlotRange->{{-1.5,1.5},{-1.5,1.5}, {-1.5, 1.5}}],

(*Układ odniesienia - równikowy równonocny*)
ParametricPlot3D[{
(Cos[ϕ]Cos[p]+Sin[ϕ]Sin[p])Sin[Φ], 
-Cos[ϕ]Sin[p]+Sin[ϕ]Cos[p],
(Cos[ϕ]Cos[p]+Sin[ϕ]Sin[p])Cos[Φ]}, 
Evaluate[{ϕ,0 ,t}/.{t->α}], PlotStyle -> Directive[Red, Thick], Axes ->False, Boxed->False, PlotRange->{{-1.5,1.5},{-1.5,1.5}, {-1.5, 1.5}}],

ParametricPlot3D[{
Evaluate[Sin[θ]((Cos[t]Cos[p]+Sin[t]Sin[p]))Sin[Φ]+Cos[θ]Cos[Φ]/.{t->α}],
Evaluate[Sin[θ](-Cos[t]Sin[p]+Sin[t]Cos[p])/.{t->α}],
Evaluate[Sin[θ](Cos[t]Cos[p]+Sin[t]Sin[p])Cos[Φ]- Cos[θ]Sin[Φ]/.{t->α}]},
Evaluate[{θ,(π/2)+b,(π/2)}/.{b->h}],PlotStyle->Directive[Blue, Thick], Boxed -> False,Axes -> False, PlotRange->{{-1.5,1.5},{-1.5,1.5}, {-1.5, 1.5}}],
(*Gwiazda*)
Graphics3D[{Specularity[White,100],Yellow,Sphere[{
Evaluate[f*(Sin[θ]((Cos[α]Cos[p]+Sin[α]Sin[p]))Sin[Φ]+Cos[θ]Cos[Φ])/.{θ->(π/2)+h}],
Evaluate[f*(Sin[θ](-Cos[α]Sin[p]+Sin[α]Cos[p]))/.{θ->(π/2)+h}],
Evaluate[f*(Sin[θ](Cos[α]Cos[p]+Sin[α]Sin[p])Cos[Φ]- Cos[θ]Sin[Φ])/.{θ->(π/2)+h}]}, 
0.025]}, Lighting -> {"Automatic", LightYellow}, PlotRange->{{-1.5,1.5},{-1.5,1.5}, {-1.5, 1.5}}],
(*Opis*)
Graphics3D[{
Text["S", {1.2, 0, 0}], 
Text["N", {-1.2, 0, 0}], 
Text["E", {0,1.2,0}], 
Text["W", {0, -1.2, 0}], 
Text["Z", {0 ,0, 1.2}], 
Text["Nd", {0 ,0, -1.2}], 
Text["R", {0.3 ,0, 1.2}], 
Text["P", {-1.3*Sin[(π/2)-Φ], 0, 1.3*Cos[(π/2)-Φ]}],
Text["ℽ", {1.15*(Cos[p])Sin[Φ], 1.15*(-Sin[p]), 1.15*(Cos[p])Cos[Φ]}],
{Red, Line[{{0,0,0}, {(Cos[p])Sin[Φ],(-Sin[p]),(Cos[p])Cos[Φ]}}]},
{Magenta, Line[{{0,0,0}, {(Cos[α]Cos[p]+Sin[α]Sin[p])Sin[Φ], -Cos[α]Sin[p]+Sin[α]Cos[p],(Cos[α]Cos[p]+Sin[α]Sin[p])Cos[Φ]}}]},
{Blue, Line[{{0, 0, 0}, {
Evaluate[f*(Sin[θ]((Cos[α]Cos[p]+Sin[α]Sin[p]))Sin[Φ]+Cos[θ]Cos[Φ])/.{θ->(π/2)+h}],
Evaluate[f*(Sin[θ](-Cos[α]Sin[p]+Sin[α]Cos[p]))/.{θ->(π/2)+h}],
Evaluate[f*(Sin[θ](Cos[α]Cos[p]+Sin[α]Sin[p])Cos[Φ]- Cos[θ]Sin[Φ])/.{θ->(π/2)+h}]}}]},
Text["α", {1.1(Cos[α]Cos[p]+Sin[α]Sin[p])Sin[Φ], 1.1(-Cos[α]Sin[p]+Sin[α]Cos[p]),1.1(Cos[α]Cos[p]+Sin[α]Sin[p])Cos[Φ]}],
Text["δ",   {Evaluate[1.1*(Sin[θ]((Cos[α]Cos[p]+Sin[α]Sin[p]))Sin[Φ]+Cos[θ]Cos[Φ])/.{θ->(π/2)+h}],
Evaluate[1.1*(Sin[θ](-Cos[α]Sin[p]+Sin[α]Cos[p]))/.{θ->(π/2)+h}],
Evaluate[1.1*(Sin[θ](Cos[α]Cos[p]+Sin[α]Sin[p])Cos[Φ]- Cos[θ]Sin[Φ])/.{θ->(π/2)+h}]
}],
Text["O", {0.2, -0.2, 0}],
PointSize[Large],Black, Point[{1,0,0}], Point[{0,1,0}],Point[{-1,0,0}],Point[{0,-1,0}],
Arrow[{{0,0,0},{0,0,0.2}}]}]
, ImageSize ->700
],
{{α, ((11π)/6), "α"},  (π/648000), 2π, (π/648000),Appearance->"Labeled", ControlType -> Slider}, {{h, (π/6), "δ"} ,((-π)/2), (π/2), ((7π)/648000),Appearance->"Labeled", ControlType -> Slider}, {{Φ, (π/4), "ϕ"}, 0, (π/2), (π/648000),Appearance->"Labeled", ControlType -> Slider},{{p, (π/4), "t [α]"}, 0, 2π, (π/648000),Appearance->"Labeled", ControlType -> Slider},
{{f, 1, "Gwiazda"} ,1, 5,ControlType -> Slider},
Paneled -> False, ControlPlacement ->Right, LocalizeVariables -> True
]

Bibliografia

[1] Eugeniusz Rybka, Astronomia ogólna, PWN, Warszawa 1978

[2] http://mathworld.wolfram.com/EulerAngles.html